/*
 * 文件名：CellHouseDao.java 版权：Copyright by www.huawei.com 描述： 修改人：Administrator 修改时间：2016年4月6日 跟踪单号：
 * 修改单号： 修改内容：
 */

package com.zcsy.manage.persistence.base;


import java.util.List;
import java.util.Map;

import com.zcsy.manage.model.base.CellHouse;
import com.zcsy.manage.model.base.OwnerHouse;
import com.zcsy.manage.model.property.CarBill;


/**
 * @Title: CellHouseDao.java
 * @Package： com.zcsy.manage.persistence.base 
 * @Description: 〈一句话功能简述〉
 *  〈功能详细描述〉
 *
 * @author caiyinli 13277030520@163.com
 * @Copyright: 2015 武汉中财数元信息技术有限公司 All rights reserved.
 * @date 2016年6月24日
 * @version 1.0
 * @see JDK1.7.0_75
 * @since
 */
public interface CellHouseDao {

    /**
     * @Description 插入小区房屋信息<br>
     * @param cellHouse
     *            小区房屋对象
     * @return 1：插入成功 0：插入失败
     * @author caiyinli 13277030520@163.com
     * @date 2016年4月6日
     * @see
     */
    int insert(CellHouse cellHouse);

    /**
     * @Description 更新小区房屋信息<br>
     * @param cellHouse
     *            小区房屋对象
     * @return 1：更新成功 0：更新失败
     * @author caiyinli 13277030520@163.com
     * @date 2016年4月6日
     * @see
     */
    int update(CellHouse cellHouse);

    /**
     * @Description 删除房屋信息<br>
     * @param ids 多个主键id
     * @return 1：删除成功 0：删除失败
     * @author caiyinli 13277030520@163.com
     * @date 2016年4月6日
     * @see
     */
    int deleteByPrimaryKey(String[] ids);

    /**
     * @Description 根据主键id获取小区房屋信息<br>
     * @param id
     *            主键id
     * @return
     * @author caiyinli 13277030520@163.com
     * @date 2016年4月6日
     * @see
     */
    CellHouse selectByPrimaryKey(String id);

    /**
     * @Description 获取所有房屋信息<br>
     * @return
     * @author caiyinli 13277030520@163.com
     * @date 2016年4月6日
     * @see
     */
    List<CellHouse> getAllCellHouse();

    /**
     * @Description 根据关键字搜索小区房屋信息<br>
     * @param cellHouse
     * @return
     * @author caiyinli 13277030520@163.com
     * @date 2016年4月6日
     * @see
     */
    List<CellHouse> selectByKeyword(CellHouse cellHouse);

    /**
     * @Description 根据对应的id修改对应的name,已保持同步<br>
     * @param id
     *            小区id
     * @param name
     *            小区名称
     * @return
     * @author caiyl 13277030520@163.com
     * @date 2016年4月11日
     * @see
     */
    int updateById(Map<String, Object> map);

    /**
     * @Description 根据单元ID 获取房屋信息
     * @param unitId
     * @return
     * @author zhangsh zsh3384027@gmail.com
     * @date 2016年4月12日
     * @see
     */
    List<CellHouse> getCellHouseByUnitId(String unitId);

    /**
     * @Description 根据关键字获取小区房间(导入模板用)
     * @param record
     *            小区房价房间对象
     * @return
     * @author xujl
     * @date 2016年4月6日
     * @see
     */
    List<CellHouse> selectForImport(CellHouse record);
    
	
	/**
	 * @Description 根据排序增加置顶功能<br>
	 * 
	 * @param record 当前房屋对象
	 * @return 1：成功 0：失败
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年6月3日
	 * @see 
	 */
	int updateSort(CellHouse record);
	
	//插入业主房屋关联信息
	/**
	 * @Description 插入业主房屋关联信息<br>
	 * 
	 * @param record 房屋对象
	 * @return 1：成功 0：失败
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年6月24日
	 * @see 
	 */
	int insertOwnerHouse(OwnerHouse record);
	
	//查询业主房屋信息（返回列表）
    /**
     * @Description 查询业主房屋信息<br>
     * 
     * @param UserId
     * @return 业主房屋列表对象
     * @author yangfan 373188993@qq.com
     * @date 2016年6月24日
     * @see 
     */
	List<OwnerHouse> getMyHouseList(String ownerId);
	
	//删除业主房屋关联信息
    /**
     * @Description 查询业主房屋信息<br>
     * 
     * @param houseId
     * @return 1:删除成功 0:删除失败
     * @author yangfan 373188993@qq.com
     * @date 2016年6月24日
     * @see 
     */
    int deleteOwnerHouseByHouseId(String houseId , String ownerId);
	
	/**
	 * @Description 通过业主id和房屋状态查询该业主房屋列表<br>
	 * 
	 * @param map ownerId:业主id
	 *            state:房屋状态
	 * @return 该业主房屋列表信息
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年6月24日
	 * @see 
	 */
	List<CellHouse> getListByOwnerIdAndState(Map map);
	
	CellHouse getHousePropertyInfo(String houseId);
	
	/**
	 * @Description 根据业主id和房屋id修改房屋状态<br>
	 * 
	 * @param map ownerId:房屋id
	 *            houseId:业主id
	 * @return 1:成功 0：失败
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年6月24日
	 * @see 
	 */
	int updateOHouseStateByOwnerIdAndHouseId(Map map);
	
	/**
	 * @Description 根据业主id和房屋id查询业主房屋信息<br>
	 * 
	 * @param map  ownerId:房屋id
	 *             houseId:业主id
	 * @return 业主房屋信息
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年6月27日
	 * @see 
	 */
	OwnerHouse getByOHouseStateByOwnerIdAndHouseId(Map map);
	
	/**
	 * @Description 接口登录后返回业主房屋信息<br>
	 * 
	 * @param ownerId 业主id
	 * @return 返回业主房屋信息
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年7月11日
	 * @see 
	 */
	List<CellHouse> getCellHouses(String ownerId);
	
	/**
     * @Method: selectHouseInfoAndCarNoByOwnerId
     * @Description 通过业主id查询房屋信息及车辆信息
     * @param ownerId
     * @return CellHouse对象列表
     * @author yangfan 373188993@qq.com
     * @date 2016年7月22日
     * @see 
     */
    List<CellHouse> selectHouseInfoAndCarNoByOwnerId(String ownerId);
    
    List<CarBill> getOwnerAllCars(String ownerId);
    
    /**
     * @Description:获取当前小区房屋信息，及房屋对应的车辆账单信息
     * @param map ownerId 业主id, 
     *            houseState 房屋状态 
     *            cellId 当前小区id
     * @author huangls 1449700087@qq.com
     * @date 2016年8月17日
     */
    List<CellHouse> selectHouseInfoCarBillByOwnerIdCellIdState(Map map); 
    
    List<CellHouse> selectByKeywordCommand(CellHouse cellHouse);

	/**
	 * @Description 插入多条小区房屋数据
	 * @param cellHouses 小区房屋列表
	 * @return 1：插入成功 0：插入失败
	 * @author liuying 1075817474@qq.com
	 * @date 2016年8月23日
	 * @see 
	 */
	int insertAll(List<CellHouse> cellHouses);
	
	/**
     * 查询单元下房屋名称是否存在
     * @Method: isNameExists
     * @param houseId 房屋id
     * @param unitId 单元id
     * @param name 房屋名称
     * @author hubing
     */
    boolean isNameExists(String houseId, String unitId, String name);
    
    /**
     * @Description 查询当前小区的所有房屋
     * @param cellId 小区id
     * @return 小区房屋列表
     * @author liuying 1075817474@qq.com
     * @date 2016年9月8日
     * @see 
     */
    List<CellHouse> getCellHouseByCellId(String cellId);
    
    /**
     * @description 计算有多少业主申请房屋
     * @return
     * Integer
     * @author chenxin
     * @date 2016年9月13日下午6:26:16
     */
    Integer countApply(String cellId);
}
